import { defineStore } from 'pinia'

/**
 * defineStore调用之后，返回的就是一个函数
 */
/**
 * 参数1：仓库的名字
 * 参数2：核心概念（两种写法---选项式（vue2风格的）、组合式（vue3风格的））
 *      选项式（vue2风格的） 第二个参数是一个对象，仓库如果需要进行持久化，则就放在这个第二个参数中（persist:true）
 *      组合式（vue3风格的） 第二个参数是一个箭头函数
 * 参数3：只有组合式API，才会有第三个参数，并且第三个参数是用来设置持久化的 持久化配置
 */
export const useCounterStore = defineStore('counter', {
  // state
  state: () => ({ count: 100 }),
  // getters
  getters: {
    doubleCount (state) {
      return state.count * 2
    }
  },
  // actions（pinia没有mutations这个概念，同步和异步，都是写在这里）
  actions: {
    add (payload) {
      this.count += payload
    },
    minus (payload) {
      setTimeout(() => {
        this.count -= payload
      }, 2000)
    }
  },
  persist: true
})
